home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / mtd / ftl.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.5 KB  |  75 lines

  1. /*
  2.  * Derived from (and probably identical to):
  3.  * ftl.h 1.7 1999/10/25 20:23:17
  4.  *
  5.  * The contents of this file are subject to the Mozilla Public License
  6.  * Version 1.1 (the "License"); you may not use this file except in
  7.  * compliance with the License. You may obtain a copy of the License
  8.  * at http://www.mozilla.org/MPL/
  9.  *
  10.  * Software distributed under the License is distributed on an "AS IS"
  11.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  12.  * the License for the specific language governing rights and
  13.  * limitations under the License.
  14.  *
  15.  * The initial developer of the original code is David A. Hinds
  16.  * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
  17.  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
  18.  *
  19.  * Alternatively, the contents of this file may be used under the
  20.  * terms of the GNU General Public License version 2 (the "GPL"), in
  21.  * which case the provisions of the GPL are applicable instead of the
  22.  * above.  If you wish to allow the use of your version of this file
  23.  * only under the terms of the GPL and not to allow others to use
  24.  * your version of this file under the MPL, indicate your decision by
  25.  * deleting the provisions above and replace them with the notice and
  26.  * other provisions required by the GPL.  If you do not delete the
  27.  * provisions above, a recipient may use your version of this file
  28.  * under either the MPL or the GPL.
  29.  */
  30.  
  31. #ifndef _LINUX_FTL_H
  32. #define _LINUX_FTL_H
  33.  
  34. typedef struct erase_unit_header_t {
  35.     u_int8_t    LinkTargetTuple[5];
  36.     u_int8_t    DataOrgTuple[10];
  37.     u_int8_t    NumTransferUnits;
  38.     u_int32_t    EraseCount;
  39.     u_int16_t    LogicalEUN;
  40.     u_int8_t    BlockSize;
  41.     u_int8_t    EraseUnitSize;
  42.     u_int16_t    FirstPhysicalEUN;
  43.     u_int16_t    NumEraseUnits;
  44.     u_int32_t    FormattedSize;
  45.     u_int32_t    FirstVMAddress;
  46.     u_int16_t    NumVMPages;
  47.     u_int8_t    Flags;
  48.     u_int8_t    Code;
  49.     u_int32_t    SerialNumber;
  50.     u_int32_t    AltEUHOffset;
  51.     u_int32_t    BAMOffset;
  52.     u_int8_t    Reserved[12];
  53.     u_int8_t    EndTuple[2];
  54. } erase_unit_header_t;
  55.  
  56. /* Flags in erase_unit_header_t */
  57. #define HIDDEN_AREA        0x01
  58. #define REVERSE_POLARITY    0x02
  59. #define DOUBLE_BAI        0x04
  60.  
  61. /* Definitions for block allocation information */
  62.  
  63. #define BLOCK_FREE(b)        ((b) == 0xffffffff)
  64. #define BLOCK_DELETED(b)    (((b) == 0) || ((b) == 0xfffffffe))
  65.  
  66. #define BLOCK_TYPE(b)        ((b) & 0x7f)
  67. #define BLOCK_ADDRESS(b)    ((b) & ~0x7f)
  68. #define BLOCK_NUMBER(b)        ((b) >> 9)
  69. #define BLOCK_CONTROL        0x30
  70. #define BLOCK_DATA        0x40
  71. #define BLOCK_REPLACEMENT    0x60
  72. #define BLOCK_BAD        0x70
  73.  
  74. #endif /* _LINUX_FTL_H */
  75.